home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / misc / emu / Apex-src.lha / XPL.BUG < prev    next >
Text File  |  2001-09-30  |  3KB  |  92 lines

  1. XPL.BUG        JUL-01-88
  2.  
  3.  
  4. MISCELLANEA
  5.  
  6. The non-floating-point version of the compiler will blow up if it
  7. encounters a decimal point or anything else that looks like a floating
  8. point constant. This can happen if a comment is not bracked correctly.
  9.  
  10. When a compile error occurs, a lowercase "n" is ignored.
  11.  
  12. "reg int X" and "int X" can both be in the same scope.
  13.  
  14. If there are no local variables, then the frame pointer does not need to
  15. be set up, or saved and restored. (It is difficult to handle 'RETURN'
  16. statements).
  17.  
  18. The 'EXIT' statement doesn't restore registers; it simply takes the Apex
  19. exit vector, similar to the ABORT intrinsic (note the asymmetry between
  20. these two methods).
  21.  
  22. It takes 13.1 seconds to compile the compiler (~23444 bytes) on the Amiga.
  23. It takes 6.5 seconds to load it. Peter can do it in 18 seconds using a
  24. 3.5MHz 65802!
  25.  
  26. The compiler should show the line count when it finds an error.
  27.  
  28. Warning! there is no check for overflowing the stack and heap except when
  29. doing a RESERVE.
  30.  
  31.  
  32. INT
  33.  
  34. BITMAP and BITMAP2 parameters should be initialized. (Use OPENO(0).)
  35.  
  36. Add the rest of the intrinsics. TESTPT, BUTTON, MOUSE, SOUND.
  37.  
  38.  
  39. FLOATING POINT
  40.  
  41. The Amiga needs floating point.
  42.  
  43. The Stride FPU is never initialized (FPINIT).
  44.  
  45. WARNING: The trick used to set a real array to an absolute address has changed.
  46.  
  47.     \Before:            \Now:
  48.     real    X;            real    X;
  49.     int    A;            begin
  50.     begin                X:= FLOAT($6000);
  51.     A:= addr X;            . . .
  52.     A(0):= $6000;
  53.     . . .
  54.  
  55.  
  56. Many floating point errors are not trapped. Such as div by 0.0, FIX overflow,
  57. and SQRT of a negative number.
  58.  
  59. FIX rounds 0.5 down rather than up. E.g: FIX(12.5) = 12
  60.  
  61. Multidimensional, constant, real arrays don't work. The loader must FIX
  62. locations using floating point values.
  63.  
  64. When the floating point registers overflow they are not saved on the stack.
  65.  
  66. The RATOM routine in the compiler should use the same algorithm that is used by
  67. RLIN.
  68.  
  69. Floating point constants (define) don't work because the compiler was
  70. compiled without real array capability.
  71.  
  72. Passing real arguments just barely works and is very inefficient.
  73.  
  74. The compiler generates code for real compares that won't work with the real
  75. 68881.
  76.  
  77. Clean up op names. STD == STT, DBX/DBI == TRX/TRI, DBA == TRA. Note that
  78. DBI and TRI are not used anymore.
  79.  
  80. Register variables for real numbers.
  81.  
  82.  
  83. TRANSCENDENTALS
  84.  
  85. ATAN(0.0,1.0) GIVES 1.XXXE-16, a relative error of some significance.
  86.  
  87. SQ kills FPP.
  88.  
  89. EXP function are not implemented.
  90.  
  91. LN(1) is not sufficiently accurate.
  92. t